From: Debian Julia Team Date: Tue, 24 Jan 2017 18:26:37 +0000 (+0000) Subject: fix-armhf-fp-status-register X-Git-Tag: archive/raspbian/0.7.0+dfsg-1+rpi1~1^2^2~2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=840d46b778c72f252b55a3aa3421b0631d17a1d5;p=openlibm.git fix-armhf-fp-status-register Gbp-Pq: Name fix-armhf-fp-status-register.patch --- diff --git a/include/openlibm_fenv_arm.h b/include/openlibm_fenv_arm.h index 8ada694..ff1946f 100644 --- a/include/openlibm_fenv_arm.h +++ b/include/openlibm_fenv_arm.h @@ -69,11 +69,13 @@ extern const fenv_t __fe_dfl_env; #if defined(__aarch64__) #define __rfs(__fpsr) __asm __volatile("mrs %0,fpsr" : "=r" (*(__fpsr))) #define __wfs(__fpsr) __asm __volatile("msr fpsr,%0" : : "r" (__fpsr)) -#elif defined(ARM_HARD_FLOAT) -#define __rfs(__fpsr) __asm __volatile("rfs %0" : "=r" (*(__fpsr))) -#define __wfs(__fpsr) __asm __volatile("wfs %0" : : "r" (__fpsr)) +/* Test for hardware support for ARM floating point operations, explicitly +checking for float and double support, see "ARM C Language Extensions", 6.5.1 */ +#elif defined(__ARM_FP) && (__ARM_FP & 0x0C) != 0 +#define __rfs(__fpsr) __asm __volatile("vmrs %0,fpscr" : "=&r" (*(__fpsr))) +#define __wfs(__fpsr) __asm __volatile("vmsr fpscr,%0" : : "r" (__fpsr)) #else -#define __rfs(__fpsr) +#define __rfs(__fpsr) (*(__fpsr) = 0) #define __wfs(__fpsr) #endif